Processing speeds of central processing units (CPUs) of computer systems have increased many fold in the recent past, and the introduction of high speed buses, such as peripheral component interface (PCI)-express, has caused performance of the computer systems to grow rapidly. However, for connecting host bus adapters to mass storage devices, such as hard disk drives and optical drives, the maximum speed of a parallel advanced technology attachment (PATA) standard is limited to 133 MB/s. Hence, a serial advanced technology attachment (SATA) standard was proposed. The serial link employed is a point-to-point high-speed differential link that utilizes gigabit technology. A SATA based mass storage device, also referred to as SATA device, provides a high bandwidth, low cost, and low power mass storage solution as compared to PATA.
Conventionally, a host processor (also referred to as host herein) communicates with the SATA device through a SATA host controller. The SATA controller receives commands from the host and sends the commands over a serial link to the SATA device. In a similar manner, the SATA controller also receives the command response and data from the SATA device over the same serial link and sends such data to the host processor. Such SATA host controllers are generally configured to communicate with a single host processor as SATA protocol architecture supports single host processor and SATA device configuration.
More recently, multiple operating systems on single host or multiple host systems are being developed. When multiple operating systems are developed, a virtualization intermediary (VI), such as virtual machine monitor (VMM) or Hypervisor, is also implemented to enable the multiple different operating systems. The VMM enables sharing of the peripherals generally connected to an I/O controller. However, such software based virtualization solutions cause high latencies and thus sharing of a SATA device with the software solution can become a bottleneck in the overall system performance.
In another example, the multiple hosts are connected to a single SATA device using external Serial Attached SCSI (SAS) expanders, which usually tunnel the SATA protocol. These expanders act as external switches and still provide access to the host one at a time. In this case, the two hosts need to coordinate to decide who accesses the SATA device, which is difficult and may not be possible in cases where the two given hosts are on different sub-systems and do not communicate with each other.